/*
 * Copyright 2013 Agustina Martinez-Garcia

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
 */
package uk.ljmu.qudexapps.manager.services;

import java.io.IOException;
import java.util.List;

import org.igfay.jfig.JFigException;

import uk.ljmu.qudexapps.manager.domain.FilesModel;
import uk.ljmu.qudexapps.manager.domain.Relation;
import uk.ljmu.qudexapps.xmllib.exceptions.FoxmlException;
import uk.ljmu.qudexapps.xmllib.model.CollectionElement;
import uk.ljmu.qudexapps.xmllib.utilities.IngestionResults;


public interface SpreadsheetService {
	public boolean isFedoraMulgaraRunning();
	public List<IngestionResults> ingestFilesSpreadsheet()
	throws FoxmlException, IOException, Exception;
	public List<IngestionResults> ingestCollectionsSpreadsheet()
	throws FoxmlException, IOException, Exception;
	public List<IngestionResults> getResults();
	//FILES MODEL MANAGEMENT
	//public FilesModel createFilesModel();
	public void initialiseFilesModel() throws FoxmlException, JFigException;
	public FilesModel getFiles();
	public void setFiles(FilesModel files);
	public String getProgress();
	public void setQudexCollections(boolean qudexCollections);
	public void setFileType(String fileType);
	public String getFileType();
	public List<String> getQudexCollections();
	public List<CollectionElement> getQudexCollectionsTree();
	public List<String> printSubtree(String collectionId);
	public void regenerateTree();
	public void setOriginalSpreadsheetPath(String path);
	public String getWorkingQudexRootCollection();
	public void setWorkingQudexRootCollection(String workingQudexRootCollection);
	public List<String> getQudexRootCollections();
	public List<String> getQudexInstanceCollections();
	public List<String> getQudexCollectionDocuments();
	public void addFedoraRelation(Relation relationObject);
	public void deleteFile();
}
